package cn.wangjie.spark.utils

import cn.wangjie.spark.etl.Region
import org.lionsoul.ip2region.{DataBlock, DbSearcher}

/**
 * IP地址解析工具类
 */
object IpUtils {

  /**
   * IP地址解析为省份和城市
   *
   * @param ip ip地址
	 * @param dbSearcher DbSearcher对象
	 * @return Region 省份城市信息
	 */
	def convertIpToRegion(ip: String, dbSearcher: DbSearcher): Region = {
		// i. 依据IP地址解析
		val dataBlock: DataBlock = dbSearcher.btreeSearch(ip)
		// 中国|0|上海|上海市|有线通
		val region: String = dataBlock.getRegion
		
		// ii. 分割字符串，获取省份和城市
		val Array(_, _, province, city, _) = region.split("\\|")
		
		// iii. 返回Region对象
		Region(ip, province, city)
	}
	
}
